package com.mmy.service.permissionmenu.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.mmy.dao.permission.TConstRoleMenuRepository;
import com.mmy.dao.permission.VConstRoleMenuRepository;
import com.mmy.domain.permissionmenu.TConstRoleMenu;
import com.mmy.domain.permissionmenu.VConstRoleMenu;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.permissionmenu.PermissionMenuService;

@Service
public class PermissionMenuServiceImpl implements PermissionMenuService {

	@Autowired
	TConstRoleMenuRepository tConstRoleMenuRepository;
	@Autowired
	VConstRoleMenuRepository vConstRoleMenuRepository;
//TODO delete
//	/**
//	 * 函数功能说明： 查找全部角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：角色菜单集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-13
//	 */
//
//	public List<TConstRoleMenu> findAll() {
//
//		return tConstRoleMenuRepository.findAll();
//	}



	/**
	 * 获取最大流水号
	 * 
	 * @return 返回值说明 流水号
	 * @author 创建人 dingxd
	 * @date 创建日期 2020.11.17
	 */
	public int getMaxID() {
		// 流水号
		Object objCode = tConstRoleMenuRepository.getMaxID();
		int iID = 0;
		if (objCode != null) {
			iID = Integer.parseInt(objCode.toString());
		}
		return iID;
	}

	/**
	 * 函数功能说明： 新建角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 无返回值
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-07-13
	
	 */
	public void saveAll(List<TConstRoleMenu> lstConstRoleMenu) {
		for (int i = 0; i < lstConstRoleMenu.size(); i++) {
			tConstRoleMenuRepository.save(lstConstRoleMenu.get(i).getID(), lstConstRoleMenu.get(i).getRoleID(),
					lstConstRoleMenu.get(i).getMenuID(), lstConstRoleMenu.get(i).getCreateDate(),
					lstConstRoleMenu.get(i).getCreator());
		}

	}

//TODO delete
//	/**
//	 * 函数功能说明： 查找所有角色编码
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 integer 集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-07-13
//	 */
//	public List<Integer> findRoleID() {
//
//		return tConstRoleMenuRepository.findRoleID();
//	}

//TODO delete
//	/**
//	 * 函数功能说明： 查找所有菜单编码
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：integer集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	public List<Integer> findMenuID() {
//
//		return tConstRoleMenuRepository.findMenuID();
//	}

//TODO delete
//	/**
//	 * 函数功能说明 删除角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：无返回值
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	public void delPermissionMenu(List<Integer> lstRoleID) {
//
//		tConstRoleMenuRepository.delPermissionMenu(lstRoleID);
//	}

//TODO delete
//	/**
//	 * 函数功能说明： 通过角色编码查找角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：角色菜单集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	public List<TConstRoleMenu> findByRoleID(int iRoleID) {
//		
//		return tConstRoleMenuRepository.findByRoleID(iRoleID);
//	}

	/**
	 * 函数功能说明： 通过角色编码删除角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 ：无返回值
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */

	public void delRoleMenuByRoleID(int iRoleID) {

		tConstRoleMenuRepository.delRoleMenuByRoleID(iRoleID);
	}

//TODO delete
//	/**
//	 * 函数功能说明： 新增角色菜单ID
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：无返回值
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	public void save(int id) {
//
//		tConstRoleMenuRepository.save(id);
//	}


	/**
	 * 函数功能说明： 通过角色编码查找角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 ：角色菜单集合
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */
	public List<VConstRoleMenu> findByRoleID(int iRoleID) {

		return vConstRoleMenuRepository.findByRoleID(iRoleID);
	}

	/**
	 * 函数功能说明： 新建角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 ：角色菜单集合
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */
	public List<TConstRoleMenu> createPermissionMenu(String checkListRoleID, String checkListMenuID,
			TSysUser tSysUser) {


//		 获取最大值 
		Object oID = tConstRoleMenuRepository.getMaxID();
		int iID = 0;
		if (oID == null) {
			iID = 1;
		} else {
			iID = Integer.parseInt(oID.toString()) + 1;
		}
//		 用，隔分 
		String[] arrRoleID = checkListRoleID.split(",");
		String[] arrMenuID = checkListMenuID.split(",");

		List<TConstRoleMenu> lstConstRoleMenu = new ArrayList<>();

//		 把对象存入list 
		for (int i = 0; i < arrRoleID.length; i++) {
			for (int j = 0; j < arrMenuID.length; j++) {
				TConstRoleMenu tConstRoleMenu = new TConstRoleMenu();

				tConstRoleMenu.setID(iID);

				tConstRoleMenu.setRoleID(Integer.parseInt(arrRoleID[i].toString()));
				tConstRoleMenu.setMenuID(Integer.parseInt(arrMenuID[j].toString()));
				tConstRoleMenu.setCreateDate(new Date());
				tConstRoleMenu.setCreator(tSysUser.getUserName());
				iID = iID + 1;
				lstConstRoleMenu.add(tConstRoleMenu);
				tConstRoleMenuRepository.save(tConstRoleMenu.getID());
			}
		}

		return lstConstRoleMenu;

	}

	/**
	 * 函数功能说明： 修改角色菜单
	 *
	 * @param 参数说明
	 * @return 返回值说明 ：角色菜单集合
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */

	public List<TConstRoleMenu> updatePermissionMenu(String checkList, TSysUser tSysUser, int iRoleID) {
//				 获取最大值 

		Object oID = tConstRoleMenuRepository.getMaxID();
		int iID = 0;
		if (oID == null) {
			iID = 1;
		} else {
			iID = Integer.parseInt(oID.toString()) + 1;
		}

//		 用，隔分 
		String[] arrMenuID = checkList.split(",");

		List<TConstRoleMenu> lstConstRoleMenu = new ArrayList<>();

//		 把对象存入list 

		for (int j = 0; j < arrMenuID.length; j++) {
			TConstRoleMenu tConstRoleMenu = new TConstRoleMenu();

			tConstRoleMenu.setID(iID);
			tConstRoleMenu.setRoleID(iRoleID);
			tConstRoleMenu.setMenuID(Integer.parseInt(arrMenuID[j].toString()));
			tConstRoleMenu.setCreateDate(new Date());
			tConstRoleMenu.setCreator(tSysUser.getUserName());
			iID = iID + 1;
			lstConstRoleMenu.add(tConstRoleMenu);
		}

		return lstConstRoleMenu;
	}



}
